package cin.ufpe.br.projetoESS.Dados;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import cin.ufpe.br.projetoESS.Entidades.Anunciante;
import cin.ufpe.br.projetoESS.Entidades.Relatorios.DadosFinanceiros;

public class RepositorioAnunciante {

	private Connection conn;

	public RepositorioAnunciante(Connection conn){
		this.conn = conn;
	}

	public void inserirAnunciante (Anunciante anunc) throws SQLException{

		Statement statement = conn.createStatement();


		String queryInsertAnunciante = "INSERT INTO ANUNCIANTE (nomeempresa,telefone,cnpj,email,endereco,pagamentomensal,validadecontrato) "
			+ "VALUES('" + anunc.getNomeEmpresa() + "'," 
			+ anunc.getTelefone() + ","
			+ anunc.getCnpj() + ",'"
			+ anunc.getEmail() + "','"
			+ anunc.getEndereco() + "',"
			+ anunc.getPagamentoMensal() + ","
			+ "TO_DATE('" + anunc.getValidadeContrato() + "','DD/MM/YYYY'))";

		System.out.println(queryInsertAnunciante);
		statement.executeUpdate(queryInsertAnunciante);
		conn.commit();

	}

	public Anunciante[] getDadosAnunciantesAtivos() throws SQLException{

		Statement statement = conn.createStatement();		
		ResultSet resultSet;

		int qtdAnunciantesAtivos = 0;		
		Anunciante[] anunciantesAtivos = null;

		String queryQtdAnunciantesAtivos = "SELECT COUNT(*) AS qtdAtivos FROM Anunciante WHERE validadeContrato >= SYSDATE";
		resultSet = statement.executeQuery(queryQtdAnunciantesAtivos);

		resultSet.next();

		qtdAnunciantesAtivos = resultSet.getInt("qtdAtivos");

		if(qtdAnunciantesAtivos > 0){

			anunciantesAtivos = new Anunciante[qtdAnunciantesAtivos];

			String queryAnunciantesAtivos = "SELECT a.*, TO_CHAR(a.validadeContrato) AS validContrato FROM Anunciante a " +
											"WHERE validadeContrato >= SYSDATE";
			
			resultSet = statement.executeQuery(queryAnunciantesAtivos);

			for(int i = 0; i < qtdAnunciantesAtivos; i++){	
				if(resultSet.next()){

					String nomeEmpresa = resultSet.getString("nomeEmpresa");
					int telefone = resultSet.getInt("telefone");
					int cnpj = resultSet.getInt("cnpj");
					String email = resultSet.getString("email");
					String endereco = resultSet.getString("endereco");
					double pagamentoMensal = resultSet.getDouble("pagamentoMensal");
					String validadeContrato = resultSet.getString("validContrato");

					anunciantesAtivos[i] = new Anunciante(nomeEmpresa, telefone, cnpj, email, endereco, pagamentoMensal, validadeContrato);
				}
			}			
		}

		return anunciantesAtivos;
	}

	public DadosFinanceiros[] getDadosGanhosAnunciantes() throws SQLException{

		DadosFinanceiros[] dadosFinanceiros = null;
		Anunciante[] anunciantesAtivos = this.getDadosAnunciantesAtivos();

		if(anunciantesAtivos != null){
			dadosFinanceiros = new DadosFinanceiros[anunciantesAtivos.length];

			for(int i = 0; i < dadosFinanceiros.length; i++){
				dadosFinanceiros[i] = new DadosFinanceiros(anunciantesAtivos[i].getNomeEmpresa(), anunciantesAtivos[i].getPagamentoMensal());
			}			
		}

		return dadosFinanceiros;

	}


}
